#!/bin/bash 
#使用说明：使用简单的异或加密secret,主要是处理接收端app中META-INF文件夹下secret明文存储的问题
#secret加解密：secret中存在字母，secret中的每个字符与key异或，如果遇到字符是字母，转换成ascii码后再异或，最后将每个字符异或的结果用-连起来；
#              将这串-链接起来的串，拆分成单个，然后每一段与key异或，如果结果出现97-102，装换成a-f,最后把每一段异或的结果拼接再一起。
secret=9a2f04aeaa63a89b2ffc54215aaa52a8
xor_key=39
echo input origin secret=$secret
resut_sec=""
for (( secret_el=1;secret_el <= `echo ${#secret}`;secret_el++)) #循环次数=字符串长度
    do
        #echo secret_el=$secret_el
        less_el=`expr $secret_el - 1`
        secret_son=${secret:$less_el:1} #显示每个字符串，一次循环显示一个
        #case $secret_son in #判断是数字还是字母
        #   [a-z]|[A-Z] ) #是字母
        #    secret_son=`printf "%d" "'$secret_son"` #字母转换成ascii值
        #    ;;
        #    [0-9] ) #是数字，不处理
        #    ;;
        #esac
        [ $secret_son == "a" ] && secret_son=97 #遇到字母转换成数字
        [ $secret_son == "b" ] && secret_son=98
        [ $secret_son == "c" ] && secret_son=99
        [ $secret_son == "d" ] && secret_son=100
        [ $secret_son == "e" ] && secret_son=101
        [ $secret_son == "f" ] && secret_son=102
        son_xor=`echo $[$secret_son^$xor_key]` #单个字符和密钥做异或
     #   echo son_xor$secret_el=$son_xor and secret_son=$secret_son
        resut_sec=$resut_sec-$son_xor #拼接异或结果
      #  echo resut_sec=${resut_sec:1}
    done
resut_sec=${resut_sec:1} #不显示最后拼接结果的第一个字符
echo xor secret=$resut_sec
resut_sec_son=""
echo $resut_sec  | sed s/"-"/\\n/g > son.txt
for son_el in `cat son.txt`
    do
      # echo son_el=$son_el
       son_el_xor=`echo $[$son_el^$xor_key]`
       #[ $son_el_xor -ge 65 ] &&  son_el_xor=`echo $son_el_xor | awk '{printf("%c", $1)}'` #数字转ascii(备用A-Z,a-z)
       [ $son_el_xor == 97 ] && son_el_xor="a"
       [ $son_el_xor == 98 ] && son_el_xor="b"
       [ $son_el_xor == 99 ] && son_el_xor="c"
       [ $son_el_xor == 100 ] && son_el_xor="d"
       [ $son_el_xor == 101 ] && son_el_xor="e"
       [ $son_el_xor == 102 ] && son_el_xor="f"
       #echo son_el_xor=$son_el_xor
       resut_sec_son="$resut_sec_son""$son_el_xor"
      # echo resut_sec_son=$resut_sec_son
    done 

echo dec secret=$resut_sec_son
echo enc secret=$secret
if [ $resut_sec_son == $secret ] ; then 
    echo dec secret is the same as origin secret,success!
else
    echo dec secret is not equal to origin secret and exit 
    exit 1
fi 
    
#openssl 是系统自带的命令，简单的加解密实例如下(-k后是密钥)：
#加密：
#echo  abc  | openssl aes-128-cbc -k 123 -base64
#解密：（加密后的密文过长，用*表示）
#echo ***** | openssl aes-128-cbc -d -k 123 -base64 
